﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel.Composition;
using System.IO;

namespace Steve.TestHelper
{
    [Export(typeof(ContentRepository))]
    public class StubContentRepository : ContentRepository
    {
        static StubContentRepository()
        {
        }

        protected override IEnumerable<Tuple<string, Guid>> GetContentPaths()
        {
            throw new NotImplementedException();
        }

        public override Content GetContent(Guid id, int? revision, bool approvedOnly)
        {
            throw new NotImplementedException();
        }

        public override IEnumerable<string> GetContentCategories(Guid contentId)
        {
            throw new NotImplementedException();
        }

        public override Content GetContentForSiteUrl(Guid siteUrlId, bool approvedOnly)
        {
            throw new NotImplementedException();
        }

        public override Stream GetContentData(Guid id)
        {
            throw new NotImplementedException();
        }

        public override IEnumerable<Tuple<Content, float?>> GetContentByCategories(IEnumerable<string> requiredCategoryNames, IEnumerable<string> optionalCategoryNames, bool includeRelevancy, bool approvedOnly, int count, Guid? excludeContentId, string onlyContentTypeName, Guid? unreadByMembershipId)
        {
            throw new NotImplementedException();
        }

        public override IEnumerable<Tuple<Content, float>> GetContentSimilarToContent(Guid similarToContentId, bool approvedOnly, int count, string onlyContentTypeName, Guid? unreadByMembershipId)
        {
            throw new NotImplementedException();
        }

        public override IEnumerable<Tuple<Guid, int>> GetUpdatedContentIds(DateTime? updatedSince)
        {
            throw new NotImplementedException();
        }
    }

    [Export(typeof(ContentAdministrationRepository))]
    public class StubContentAdministrationRepository : ContentAdministrationRepository
    {
        protected override void ApproveContentCore(Guid contentId, int revisionNumber)
        {
            throw new NotImplementedException();
        }

        protected override void SaveContentCategoriesCore(Guid contentId, IEnumerable<string> categories, DateTime revisionDate, Guid? revisionMembershipId)
        {
            throw new NotImplementedException();
        }

        protected override Content SaveContentCore(Content toSave)
        {
            throw new NotImplementedException();
        }

        protected override void NewContentDataCore(Guid id, DateTime createDate, Stream data)
        {
            throw new NotImplementedException();
        }

        public override void RebuildContentSimilarityCache(Guid? updatedId)
        {
            throw new NotImplementedException();
        }

        protected override void MarkContentReadCore(Guid contentId, DateTime readDate, decimal? rating, Guid membershipId)
        {
            throw new NotImplementedException();
        }
    }
}
